Because of the widespread adoption of computer networking technologies, client computing devices are increasingly interconnected, e.g., with server computing devices. As more applications are implemented as collaborative, multi-user, or multi-player, servers must coordinate sending nearly simultaneous updates to multiple clients, each with varying processing power and using various network capabilities. As the demand on servers from this multitude of heterogeneous clients grows, servers' ability to provide timely service has decreased.
One prior art approach to serving multi-client application updates to the connected clients involves synchronously sending data to all connected clients so that the next update is sent when each client has acknowledged the current update. Another approach is to duplicate sets of update data for faster versus slower clients. These approaches produce numerous drawbacks. Synchronously sending updates to multiple clients requires that even though a faster client has acknowledged an update and is ready to receive the next update, the faster client must wait until a slower client has also acknowledged the update. This can result in unnecessary lag for the faster client and buildup on the server of pending updates. Duplicating data for fast clients does not introduce dependence based lag, but ties up valuable server resources and processing power as duplicate data is created and maintained.